<!doctype html>
<html lang="en">
<head>
    <title>Code coverage report for utils/touchHandlers.js</title>
    <meta charset="utf-8" />
    <link rel="stylesheet" href="../prettify.css" />
    <link rel="stylesheet" href="../base.css" />
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <style type='text/css'>
        .coverage-summary .sorter {
            background-image: url(../sort-arrow-sprite.png);
        }
    </style>
</head>
<body>
<div class='wrapper'>
  <div class='pad1'>
    <h1>
      <a href="../index.html">All files</a> / <a href="index.html">utils</a> touchHandlers.js
    </h1>
    <div class='clearfix'>
      <div class='fl pad1y space-right2'>
        <span class="strong">0% </span>
        <span class="quiet">Statements</span>
        <span class='fraction'>0/37</span>
      </div>
      <div class='fl pad1y space-right2'>
        <span class="strong">0% </span>
        <span class="quiet">Branches</span>
        <span class='fraction'>0/22</span>
      </div>
      <div class='fl pad1y space-right2'>
        <span class="strong">0% </span>
        <span class="quiet">Functions</span>
        <span class='fraction'>0/6</span>
      </div>
      <div class='fl pad1y space-right2'>
        <span class="strong">0% </span>
        <span class="quiet">Lines</span>
        <span class='fraction'>0/30</span>
      </div>
    </div>
  </div>
  <div class='status-line low'></div>
<pre><table class="coverage">
<tr><td class="line-count quiet">1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49</td><td class="line-coverage quiet"><span class="cline-any cline-no">&nbsp;</span>
<span class="cline-any cline-no">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-no">&nbsp;</span>
<span class="cline-any cline-no">&nbsp;</span>
<span class="cline-any cline-no">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-no">&nbsp;</span>
<span class="cline-any cline-no">&nbsp;</span>
<span class="cline-any cline-no">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-no">&nbsp;</span>
<span class="cline-any cline-no">&nbsp;</span>
<span class="cline-any cline-no">&nbsp;</span>
<span class="cline-any cline-no">&nbsp;</span>
<span class="cline-any cline-no">&nbsp;</span>
<span class="cline-any cline-no">&nbsp;</span>
<span class="cline-any cline-no">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-no">&nbsp;</span>
<span class="cline-any cline-no">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-no">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-no">&nbsp;</span>
<span class="cline-any cline-no">&nbsp;</span>
<span class="cline-any cline-no">&nbsp;</span>
<span class="cline-any cline-no">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-no">&nbsp;</span>
<span class="cline-any cline-no">&nbsp;</span>
<span class="cline-any cline-no">&nbsp;</span>
<span class="cline-any cline-no">&nbsp;</span>
<span class="cline-any cline-no">&nbsp;</span>
<span class="cline-any cline-no">&nbsp;</span>
<span class="cline-any cline-no">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-no">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span></td><td class="text"><pre class="prettyprint lang-js">import defaul<span class="cstat-no" title="statement not covered" >ts from './defaults';<span class="cstat-no" title="statement not covered" ><span class="cstat-no" title="statement not covered" ><span class="cstat-no" title="statement not covered" ></span></span></span></span>
import { isFunction <span class="cstat-no" title="statement not covered" >} from './typeCheckers';<span class="cstat-no" title="statement not covered" ><span class="fstat-no" title="function not covered" ></span></span></span>
&nbsp;
export const registerTapO<span class="cstat-no" title="statement not covered" >rClick = (element, handler) =&gt; {<span class="fstat-no" title="function not covered" ></span></span>
<span class="cstat-no" title="statement not covered" >  if (!element || !element.addEventListener || !isFunction(handler)) return null;<span class="cstat-no" title="statement not covered" ></span></span>
  const registration <span class="cstat-no" title="statement not covered" >= {</span>
    touchState: null,
  };
  const onTouchStart <span class="cstat-no" title="statement not covered" >= (e) =&gt; <span class="fstat-no" title="function not covered" >{</span></span>
    const t <span class="cstat-no" title="statement not covered" >= e.targetTouches[0</span>];
<span class="cstat-no" title="statement not covered" >    registration.touchState = {</span>
      started: true,
      startedOn: new Date(),
      startX: t.screenX,
      startY: t.screenY,
      x: t.screenX,
      y: t.screenY,
    };
  };
  const onTouchEnd <span class="cstat-no" title="statement not covered" >= (e) =&gt; <span class="fstat-no" title="function not covered" >{</span></span>
    const state <span class="cstat-no" title="statement not covered" >= registration.touchStat</span>e;
<span class="cstat-no" title="statement not covered" >    if (!state || !state.started) <span class="cstat-no" title="statement not covered" >return;</span></span>
    const t <span class="cstat-no" title="statement not covered" >= e.changedTouches[0</span>];
<span class="cstat-no" title="statement not covered" >    state.x = t.screenX;</span>
<span class="cstat-no" title="statement not covered" >    state.y = t.screenY;</span>
<span class="cstat-no" title="statement not covered" >    state.tapDetected = new Date() - state.startedOn &lt;= defaults.maxTapDuration &amp;&amp;</span>
      Math.abs(state.x - state.startX) &lt;= defaults.maxTapTolerance &amp;&amp;
      Math.abs(state.y - state.startY) &lt;= defaults.maxTapTolerance;
<span class="cstat-no" title="statement not covered" >    if (state.tapDetected) {</span>
<span class="cstat-no" title="statement not covered" >      handler(e);</span>
    }
<span class="cstat-no" title="statement not covered" >    state.started = false;</span>
  };
  const onClick <span class="cstat-no" title="statement not covered" >= (e) =&gt; <span class="fstat-no" title="function not covered" >{</span></span>
    const state <span class="cstat-no" title="statement not covered" >= registration.touchStat</span>e;
<span class="cstat-no" title="statement not covered" >    if (state &amp;&amp; state.tapDetected) <span class="cstat-no" title="statement not covered" >return;</span></span>
<span class="cstat-no" title="statement not covered" >    handler(e);</span>
  };
<span class="cstat-no" title="statement not covered" >  element.addEventListener('touchstart', onTouchStart);</span>
<span class="cstat-no" title="statement not covered" >  element.addEventListener('touchend', onTouchEnd);</span>
<span class="cstat-no" title="statement not covered" >  element.addEventListener('click', onClick);</span>
<span class="cstat-no" title="statement not covered" >  registration.cleanup = <span class="fstat-no" title="function not covered" >()</span> =&gt; {</span>
<span class="cstat-no" title="statement not covered" >    element.removeEventListener('touchstart', onTouchStart);</span>
<span class="cstat-no" title="statement not covered" >    element.removeEventListener('touchend', onTouchEnd);</span>
<span class="cstat-no" title="statement not covered" >    element.removeEventListener('click', onClick);</span>
  };
<span class="cstat-no" title="statement not covered" >  return registration;</span>
};
&nbsp;</pre></td></tr>
</table></pre>
<div class='push'></div><!-- for sticky footer -->
</div><!-- /wrapper -->
<div class='footer quiet pad2 space-top1 center small'>
  Code coverage
  generated by <a href="https://istanbul.js.org/" target="_blank">istanbul</a> at Fri Jan 05 2018 11:32:47 GMT-0600 (CST)
</div>
</div>
<script src="../prettify.js"></script>
<script>
window.onload = function () {
        if (typeof prettyPrint === 'function') {
            prettyPrint();
        }
};
</script>
<script src="../sorter.js"></script>
</body>
</html>
